雖說監控大多為後勤系統,但在需要查看系統歷史狀態的話是非常有用的。因此對監控系統做適時的備份仍有其必要性。
由於本書中所有有 Zabbix 關鍵程式是使用 Container 搭成,所以可以減化其備份與還原的流程。對於 Zabbix 來說因為所有的資料是放在 MySQL 資料庫裡,所以資料庫是備份時的重點。
建立備份目錄
root# mkdir ~/backup/; cd ~/backup/
使用 mysqldump 備份資料庫並壓縮
root# mysqldump -u root -p -h localhost zabbix > zabbix.sql
root# tar -zcf zabbix.sql.tar.gz zabbix.sql
將以上 zabbix.sql.tar.gz 另存到其它的主機或設備中。
我們假設整個 Zabbix 主機需要重建,其重建步驟為:
安裝必要套件
root# dnf install -y chrony podman podman-plugins runc mysql-server
時間校時
root# systemctl enable --now chronyd
root# sleep 60
root# hwclock -w
啟動 MySQL 服務
root# systemctl enable --now mysqld
設定 Zabbix 使用的資料庫帳號與權限
root# echo "create database zabbix character set utf8mb4 collate utf8mb4_bin; " | mysql -u root -h localhost
root# echo "create user 'zabbix'@'10.89.0.%' identified by 'P@ssw0rd'; " | mysql -u root -h localhost
root# echo "grant all privileges on zabbix.* to 'zabbix'@'10.89.0.%'; " | mysql -u root -h localhost
root# echo "SET GLOBAL log_bin_trust_function_creators = 1; " | mysql -u root -h localhost
將備份的資料庫檔案解開並還原。
root# tar zxf tar zxf zabbix.sql.tar.gz
root# mysql -u root -p -h localhost zabbix < zabbix.sql
建立 Container 網路
root# podman network create net_zabbix
建立 zabbix_server 容器
root# podman run --name zabbix_server \
--network net_zabbix -d \
-p 10051:10051 \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="P@ssw0rd" \
-e DB_SERVER_HOST="10.89.0.1" \
docker.io/zabbix/zabbix-server-mysql:alpine-7.0.0
建立 zabbix_web 容器
root# podman run --name zabbix_web \
--network net_zabbix \
-p 8080:8080 \
-p 8443:8443 \
-e DB_SERVER_HOST="10.89.0.1" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="P@ssw0rd" \
-e ZBX_SERVER_HOST="zabbix_server" \
-e MYSQL_DATABASE=zabbix \
-e PHP_TZ="Asia/Taipei" \
-d docker.io/zabbix/zabbix-web-nginx-mysql:7.0.0-alpine
檢查運行狀態
root# podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
80d98037d2e3 docker.io/zabbix/zabbix-server-mysql:alpine-7.0.0 /usr/sbin/zabbix_... 3 minutes ago Up 3 minutes 0.0.0.0:10051->10051/tcp zabbix_server
409bd153ee9e docker.io/zabbix/zabbix-web-nginx-mysql:7.0.0-alpine 5 seconds ago Up 5 seconds 0.0.0.0:8080->8080/tcp, 0.0.0.0:8443->8443/tcp zabbix_web
在以上的還原流程中可以瞭解,基本上 Zabbix 的資料若有備份,在還原時就是使用 "建置" 的流程再做一次。
因此在中小型架構下的監控環境,以容器做部署是筆者較為推薦的。
本書相關參考:
還原完成後,我們可以使用原帳號密碼登入,並查看到先前的監控資訊。